package utils;
import com.zaxxer.hikari.HikariConfig;
import com.zaxxer.hikari.HikariDataSource;

import java.sql.Connection;
import java.sql.SQLException;

public class DBUtil_Plus {
    private static HikariDataSource dataSource;

    static {
        HikariConfig config = new HikariConfig();
        config.setDriverClassName("com.mysql.jdbc.Driver");
        config.setJdbcUrl("jdbc:mysql://154.91.179.153/db_005");
        config.setUsername("user005");
        config.setPassword("222019#web");
        config.addDataSourceProperty("cachePrepStmts", "true");
        config.addDataSourceProperty("prepStmtCacheSize", "250");
        config.addDataSourceProperty("prepStmtCacheSqlLimit", "2048");
        // 设置连接空闲超时时间为半分钟
        config.setIdleTimeout(30000); // 单位为毫秒
        // 设置连接的最大生命周期为 1 分钟
        config.setMaxLifetime(60000); // 单位为毫秒
        // 设置连接池的最大连接数为 30
        config.setMaximumPoolSize(20);
        dataSource = new HikariDataSource(config);
    }

    public static Connection getConnection() throws SQLException {
        return dataSource.getConnection();
    }

    public static void closeConnection(Connection conn) {
        if (conn != null) {
            try {
                conn.close();
            } catch (SQLException e) {
                // 记录错误，而不是仅仅打印堆栈跟踪
                System.err.println("Error closing connection: " + e.getMessage());
            }
        }
    }
    // ... 其他方法
}